﻿using System;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using System.ComponentModel;

namespace Fayshine.VA.Models
{
    public class RealTimePassengerFlow : INotifyPropertyChanged
    {
        #region Private Fields

        private int m_GateID;
        private string m_GateName;
        private int m_CurrentIn;
        private int m_CurrentOut;
        private int m_TodayIn;
        private int m_TodayOut;
        private int m_AvageIn;
        private int m_AvageOut;
        private int m_CurrentPassenger;
        private int m_AvagePassenger;

        #endregion

        #region Properties

        public int GateID
        {
            get
            {
                return m_GateID;
            }
            set
            {
                m_GateID = value;
                NofityPropertyChanged("GateID");
            }
        }

        public string GateName
        {
            get
            {
                return m_GateName;
            }
            set
            {
                m_GateName = value;
                NofityPropertyChanged("GateName");
            }
        }

        public int CurrentIn
        {
            get
            {
                return m_CurrentIn;
            }
            set
            {
                m_CurrentIn = value;
                NofityPropertyChanged("CurrentIn");
            }
        }

        public int CurrentOut
        {
            get
            {
                return m_CurrentOut;
            }
            set
            {
                m_CurrentOut = value;
                NofityPropertyChanged("CurrentOut");
            }
        }

        public int TodayIn
        {
            get
            {
                return m_TodayIn;
            }
            set
            {
                m_TodayIn = value;
                NofityPropertyChanged("TodayIn");
            }
        }

        public int TodayOut
        {
            get
            {
                return m_TodayOut;
            }
            set
            {
                m_TodayOut = value;
                NofityPropertyChanged("TodayOut");
            }
        }

        public int AvageIn
        {
            get
            {
                return m_AvageIn;
            }
            set
            {
                m_AvageIn = value;
                NofityPropertyChanged("AvageIn");
            }
        }

        public int AvageOut
        {
            get
            {
                return m_AvageOut;
            }
            set
            {
                m_AvageOut = value;
                NofityPropertyChanged("AvageOut");
            }
        }

        public int CurrentPassenger
        {
            get
            {
                return m_CurrentPassenger;
            }
            set
            {
                m_CurrentPassenger = value;
                NofityPropertyChanged("CurrentPassenger");
            }
        }

        public int AvagePassenger
        {
            get
            {
                return m_AvagePassenger;
            }
            set
            {
                m_AvagePassenger = value;
                NofityPropertyChanged("AvagePassenger");
            }
        }

        #endregion

        #region INotifyPropertyChanged Interface

        public event PropertyChangedEventHandler PropertyChanged;
        public void NofityPropertyChanged(string propertyName)
        {
            if (PropertyChanged != null)
            {
                PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
            }
        }

        #endregion
    }

    public class HistoryPassengerFlow : INotifyPropertyChanged
    {
        #region Private Fields

        private int m_GateID;
        private string m_GateName;
        private string m_DisplayTitle;
        private int m_InCount;
        private int m_OutCount;
        private int m_AllInOut;
        private int m_Differ;
        private int m_AccumulateInCount;
        private int m_AccumulateOutCount;
        private int m_StrandedCount;
        private DateTime m_HistoryTime;
        private int m_MonthOrDayOrWeek;
        private string m_DisplayValue;
        private string m_DisplayDate;
        private int m_TradeCount;
        private int m_TradeMoney;
        private string m_AvgTradeMoney;
        private double m_SalePercent;
        private int m_StrandedMinutes;
        private int m_Age;
        private bool m_Gender;
        private string m_SexName;

        #endregion

        #region Properties

        public int GateID
        {
            get
            {
                return m_GateID;
            }
            set
            {
                m_GateID = value;
                NofityPropertyChanged("GateID");
            }
        }

        public string GateName
        {
            get
            {
                return m_GateName;
            }
            set
            {
                m_GateName = value;
                NofityPropertyChanged("GateName");
            }
        }

        public string DisplayTitle
        {
            get
            {
                return m_DisplayTitle;
            }
            set
            {
                m_DisplayTitle = value;
                NofityPropertyChanged("DisplayTitle");
            }
        }

        public int InCount
        {
            get
            {
                return m_InCount;
            }
            set
            {
                m_InCount = value;
                NofityPropertyChanged("InCount");
            }
        }

        public int OutCount
        {
            get
            {
                return m_OutCount;
            }
            set
            {
                m_OutCount = value;
                NofityPropertyChanged("OutCount");
            }
        }

        public int AllInOut
        {
            get
            {
                return m_AllInOut;
            }
            set
            {
                m_AllInOut = value;
                NofityPropertyChanged("AllInOut");
            }
        }

        public int Differ
        {
            get
            {
                return m_Differ;
            }
            set
            {
                m_Differ = value;
                NofityPropertyChanged("Differ");
            }
        }

        public int AccumulateInCount
        {
            get
            {
                return m_AccumulateInCount;
            }
            set
            {
                m_AccumulateInCount = value;
                NofityPropertyChanged("AccumulateInCount");
            }
        }

        public int AccumulateOutCount
        {
            get
            {
                return m_AccumulateOutCount;
            }
            set
            {
                m_AccumulateOutCount = value;
                NofityPropertyChanged("AccumulateOutCount");
            }
        }

        public int StrandedCount
        {
            get
            {
                return m_StrandedCount;
            }
            set
            {
                m_StrandedCount = value;
                NofityPropertyChanged("StrandedCount");
            }

        }

        public DateTime HistoryTime
        {
            get
            {
                return m_HistoryTime;
            }
            set
            {
                m_HistoryTime = value;
                NofityPropertyChanged("HistoryTime");
            }
        }

        public int MonthOrDayOrWeek
        {
            get
            {
                return m_MonthOrDayOrWeek;
            }
            set
            {
                m_MonthOrDayOrWeek = value;
                NofityPropertyChanged("MonthOrDayOrWeek");
            }
        }

        public string DisplayValue
        {
            get
            {
                return m_DisplayValue;
            }
            set
            {
                m_DisplayValue = value;
                NofityPropertyChanged("DisplayValue");
            }
        }

        public string DisplayDate
        {
            get
            {
                return m_DisplayDate;
            }
            set
            {
                m_DisplayDate = value;
                NofityPropertyChanged("DisplayDate");
            }
        }

        public int TradeCount
        {
            get
            {
                return m_TradeCount;
            }
            set
            {
                m_TradeCount = value;
                NofityPropertyChanged("TradeCount");
            }
        }

        public int TradeMoney
        {
            get
            {
                return m_TradeMoney;
            }
            set
            {
                m_TradeMoney = value;
                NofityPropertyChanged("TradeMoney");
            }
        }

        public string AvgTradeMoney
        {
            get
            {
                return m_AvgTradeMoney;
            }
            set
            {
                m_AvgTradeMoney = value;
                NofityPropertyChanged("AvgTradeMoney");
            }
        }

        public double SalePercent
        {
            get
            {
                return m_SalePercent;
            }
            set
            {
                m_SalePercent = value;
                NofityPropertyChanged("SalePercent");
            }
        }

        public int StrandedMinutes
        {
            get
            {
                return m_StrandedMinutes;
            }
            set
            {
                m_StrandedMinutes = value;
                NofityPropertyChanged("StrandedMinutes");
            }
        }

        public int Age
        {
            get
            {
                return m_Age;
            }
            set
            {
                m_Age = value;
                NofityPropertyChanged("Age");
            }
        }

        public bool Gender
        {
            get
            {
                return m_Gender;
            }
            set
            {
                m_Gender = value;
                NofityPropertyChanged("Gender");
            }
        }

        public string SexName
        {
            get
            {
                return m_SexName;
            }
            set
            {
                m_SexName = value;
                NofityPropertyChanged("SexName");
            }
        }

        #endregion

        #region INotifyPropertyChanged Interface

        public event PropertyChangedEventHandler PropertyChanged;
        public void NofityPropertyChanged(string propertyName)
        {
            if (PropertyChanged != null)
            {
                PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
            }
        }

        #endregion
    }

    public class ComparePassengerFlow : INotifyPropertyChanged
    {

        private string m_DisplayDate;
        private string m_CompareDate;
        private string m_Schedule;
        private string m_CompareSchedule;
        private int m_InCount;
        private string m_InPercent;
        private int m_CompareInCount;
        private string m_CompareInPercent;
        private int m_OutCount;
        private string m_OutPercent;
        private int m_CompareOutCount;
        private string m_CompareOutPercent;
        private string m_DisplayTitle;

        public string CompareDate
        {
            get
            {
                return m_CompareDate;
            }
            set
            {
                m_CompareDate = value;
                NofityPropertyChanged("CompareDate");
            }
        }

        public string DisplayDate
        {
            get
            {
                return m_DisplayDate;
            }
            set
            {
                m_DisplayDate = value;
                NofityPropertyChanged("DisplayDate");
            }
        }

        public string Schedule
        {
            get
            {
                return m_Schedule;
            }
            set
            {
                m_Schedule = value;
                NofityPropertyChanged("Schedule");
            }
        }

        public string CompareSchedule
        {
            get
            {
                return m_CompareSchedule;
            }
            set
            {
                m_CompareSchedule = value;
                NofityPropertyChanged("CompareSchedule");
            }
        }

        public int InCount
        {
            get
            {
                return m_InCount;
            }
            set
            {
                m_InCount = value;
                NofityPropertyChanged("InCount");
            }
        }

        public string InPercent
        {
            get
            {
                return m_InPercent;
            }
            set
            {
                m_InPercent = value;
                NofityPropertyChanged("InPercent");
            }
        }

        public int CompareInCount
        {
            get
            {
                return m_CompareInCount;
            }
            set
            {
                m_CompareInCount = value;
                NofityPropertyChanged("CompareInCount");
            }
        }

        public string CompareInPercent
        {
            get
            {
                return m_CompareInPercent;
            }
            set
            {
                m_CompareInPercent = value;
                NofityPropertyChanged("CompareInPercent");
            }
        }

        public int OutCount
        {
            get
            {
                return m_OutCount;
            }
            set
            {
                m_OutCount = value;
                NofityPropertyChanged("OutCount");
            }
        }

        public string OutPercent
        {
            get
            {
                return m_OutPercent;
            }
            set
            {
                m_OutPercent = value;
                NofityPropertyChanged("OutPercent");
            }
        }

        public int CompareOutCount
        {
            get
            {
                return m_CompareOutCount;
            }
            set
            {
                m_CompareOutCount = value;
                NofityPropertyChanged("CompareOutCount");
            }
        }

        public string CompareOutPercent
        {
            get
            {
                return m_CompareOutPercent;
            }
            set
            {
                m_CompareOutPercent = value;
                NofityPropertyChanged("CompareOutPercent");
            }
        }

        public string DisplayTitle
        {
            get
            {
                return m_DisplayTitle;
            }
            set
            {
                m_DisplayTitle = value;
                NofityPropertyChanged("DisplayTitle");
            }
        }

        #region INotifyPropertyChanged Interface

        public event PropertyChangedEventHandler PropertyChanged;
        public void NofityPropertyChanged(string propertyName)
        {
            if (PropertyChanged != null)
            {
                PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
            }
        }

        #endregion
    }

    public class WeekComparePassengerFlow : INotifyPropertyChanged
    {
        private string m_DisplayDate;
        private string m_DisplayTitle;

        private int m_MonDayCount;
        private int m_TueDayCount;
        private int m_WedDayCount;
        private int m_ThuDayCount;
        private int m_FriDayCount;
        private int m_SatDayCount;
        private int m_SunDayCount;
        private int m_WorkDayCount;
        private string m_WorkDayPercent;
        private int m_HoliDayCount;
        private string m_HoliDayPercent;
        private int m_AllCount;
        private string m_AllPercent;

        private int m_LastWeekCount;
        private string m_LastWeekPercent;

        private DateTime m_HistoryTime;

        public int MonDayCount
        {
            get
            {
                return m_MonDayCount;
            }
            set
            {
                m_MonDayCount = value;
                NofityPropertyChanged("MonDayCount");
            }
        }

        public int TueDayCount
        {
            get
            {
                return m_TueDayCount;
            }
            set
            {
                m_TueDayCount = value;
                NofityPropertyChanged("TueDayCount");
            }
        }

        public int WedDayCount
        {
            get
            {
                return m_WedDayCount;
            }
            set
            {
                m_WedDayCount = value;
                NofityPropertyChanged("WedDayCount");
            }
        }

        public int ThuDayCount
        {
            get
            {
                return m_ThuDayCount;
            }
            set
            {
                m_ThuDayCount = value;
                NofityPropertyChanged("ThuDayCount");
            }
        }

        public int FriDayCount
        {
            get
            {
                return m_FriDayCount;
            }
            set
            {
                m_FriDayCount = value;
                NofityPropertyChanged("FriDayCount");
            }
        }

        public int SatDayCount
        {
            get
            {
                return m_SatDayCount;
            }
            set
            {
                m_SatDayCount = value;
                NofityPropertyChanged("SatDayCount");
            }
        }

        public int SunDayCount
        {
            get
            {
                return m_SunDayCount;
            }
            set
            {
                m_SunDayCount = value;
                NofityPropertyChanged("SunDayCount");
            }
        }

        public int WorkDayCount
        {
            get
            {
                return m_WorkDayCount;
            }
            set
            {
                m_WorkDayCount = value;
                NofityPropertyChanged("WorkDayCount");
            }
        }

        public string WorkDayPercent
        {
            get
            {
                return m_WorkDayPercent;
            }
            set
            {
                m_WorkDayPercent = value;
                NofityPropertyChanged("WorkDayPercent");
            }
        }

        public int HoliDayCount
        {
            get
            {
                return m_HoliDayCount;
            }
            set
            {
                m_HoliDayCount = value;
                NofityPropertyChanged("HoliDayCount");
            }
        }

        public string HoliDayPercent
        {
            get
            {
                return m_HoliDayPercent;
            }
            set
            {
                m_HoliDayPercent = value;
                NofityPropertyChanged("HoliDayPercent");
            }
        }

        public int AllCount
        {
            get
            {
                return m_AllCount;
            }
            set
            {
                m_AllCount = value;
                NofityPropertyChanged("AllCount");
            }
        }

        public string AllPercent
        {
            get
            {
                return m_AllPercent;
            }
            set
            {
                m_AllPercent = value;
                NofityPropertyChanged("AllPercent");
            }
        }

        public int LastWeekCount
        {
            get
            {
                return m_LastWeekCount;
            }
            set
            {
                m_LastWeekCount = value;
                NofityPropertyChanged("LastWeekCount");
            }
        }

        public string LastWeekPercent
        {
            get
            {
                return m_LastWeekPercent;
            }
            set
            {
                m_LastWeekPercent = value;
                NofityPropertyChanged("LastWeekPercent");
            }
        }

        public string DisplayDate
        {
            get
            {
                return m_DisplayDate;
            }
            set
            {
                m_DisplayDate = value;
                NofityPropertyChanged("DisplayDate");
            }
        }

        public string DisplayTitle
        {
            get
            {
                return m_DisplayTitle;
            }
            set
            {
                m_DisplayTitle = value;
                NofityPropertyChanged("DisplayTitle");
            }
        }

        public DateTime HistoryTime
        {
            get
            {
                return m_HistoryTime;
            }
            set
            {
                m_HistoryTime = value;
                NofityPropertyChanged("HistoryTime");
            }
        }

        #region INotifyPropertyChanged Interface

        public event PropertyChangedEventHandler PropertyChanged;
        public void NofityPropertyChanged(string propertyName)
        {
            if (PropertyChanged != null)
            {
                PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
            }
        }

        #endregion
    }

    public class WeekPassengerFlow : INotifyPropertyChanged
    {

        private string m_DisplayDate;
        private string m_DisplayTitle;

        private int m_MonDayInCount;
        private int m_TueDayInCount;
        private int m_WedDayInCount;
        private int m_ThuDayInCount;
        private int m_FriDayInCount;
        private int m_SatDayInCount;
        private int m_SunDayInCount;
        private int m_ThisWeekInCount;
        private string m_ThisWeekInPercent;
        private int m_LastWeekInCount;
        private string m_LastWeekInPercent;

        private int m_MonDayOutCount;
        private int m_TueDayOutCount;
        private int m_WedDayOutCount;
        private int m_ThuDayOutCount;
        private int m_FriDayOutCount;
        private int m_SatDayOutCount;
        private int m_SunDayOutCount;
        private int m_ThisWeekOutCount;
        private string m_ThisWeekOutPercent;
        private int m_LastWeekOutCount;
        private string m_LastWeekOutPercent;


        private DateTime m_HistoryTime;
        private int m_GateID;

        public int MonDayInCount
        {
            get
            {
                return m_MonDayInCount;
            }
            set
            {
                m_MonDayInCount = value;
                NofityPropertyChanged("MonDayInCount");
            }
        }

        public int TueDayInCount
        {
            get
            {
                return m_TueDayInCount;
            }
            set
            {
                m_TueDayInCount = value;
                NofityPropertyChanged("TueDayInCount");
            }
        }

        public int WedDayInCount
        {
            get
            {
                return m_WedDayInCount;
            }
            set
            {
                m_WedDayInCount = value;
                NofityPropertyChanged("WedDayInCount");
            }
        }

        public int ThuDayInCount
        {
            get
            {
                return m_ThuDayInCount;
            }
            set
            {
                m_ThuDayInCount = value;
                NofityPropertyChanged("ThuDayInCount");
            }
        }

        public int FriDayInCount
        {
            get
            {
                return m_FriDayInCount;
            }
            set
            {
                m_FriDayInCount = value;
                NofityPropertyChanged("FriDayInCount");
            }
        }

        public int SatDayInCount
        {
            get
            {
                return m_SatDayInCount;
            }
            set
            {
                m_SatDayInCount = value;
                NofityPropertyChanged("SatDayInCount");
            }
        }

        public int SunDayInCount
        {
            get
            {
                return m_SunDayInCount;
            }
            set
            {
                m_SunDayInCount = value;
                NofityPropertyChanged("SunDayInCount");
            }
        }

        public int ThisWeekInCount
        {
            get
            {
                return m_ThisWeekInCount;
            }
            set
            {
                m_ThisWeekInCount = value;
                NofityPropertyChanged("ThisWeekInCount");
            }
        }

        public string ThisWeekInPercent
        {
            get
            {
                return m_ThisWeekInPercent;
            }
            set
            {
                m_ThisWeekInPercent = value;
                NofityPropertyChanged("ThisWeekInPercent");
            }
        }

        public int LastWeekInCount
        {
            get
            {
                return m_LastWeekInCount;
            }
            set
            {
                m_LastWeekInCount = value;
                NofityPropertyChanged("LastWeekInCount");
            }
        }

        public string LastWeekInPercent
        {
            get
            {
                return m_LastWeekInPercent;
            }
            set
            {
                m_LastWeekInPercent = value;
                NofityPropertyChanged("LastWeekInPercent");
            }
        }

        public int MonDayOutCount
        {
            get
            {
                return m_MonDayOutCount;
            }
            set
            {
                m_MonDayOutCount = value;
                NofityPropertyChanged("MonDayOutCount");
            }
        }

        public int TueDayOutCount
        {
            get
            {
                return m_TueDayOutCount;
            }
            set
            {
                m_TueDayOutCount = value;
                NofityPropertyChanged("TueDayOutCount");
            }
        }

        public int WedDayOutCount
        {
            get
            {
                return m_WedDayOutCount;
            }
            set
            {
                m_WedDayOutCount = value;
                NofityPropertyChanged("WedDayOutCount");
            }
        }

        public int ThuDayOutCount
        {
            get
            {
                return m_ThuDayOutCount;
            }
            set
            {
                m_ThuDayOutCount = value;
                NofityPropertyChanged("ThuDayOutCount");
            }
        }

        public int FriDayOutCount
        {
            get
            {
                return m_FriDayOutCount;
            }
            set
            {
                m_FriDayOutCount = value;
                NofityPropertyChanged("FriDayOutCount");
            }
        }

        public int SatDayOutCount
        {
            get
            {
                return m_SatDayOutCount;
            }
            set
            {
                m_SatDayOutCount = value;
                NofityPropertyChanged("SatDayOutCount");
            }
        }

        public int SunDayOutCount
        {
            get
            {
                return m_SunDayOutCount;
            }
            set
            {
                m_SunDayOutCount = value;
                NofityPropertyChanged("SunDayOutCount");
            }
        }

        public int ThisWeekOutCount
        {
            get
            {
                return m_ThisWeekOutCount;
            }
            set
            {
                m_ThisWeekOutCount = value;
                NofityPropertyChanged("ThisWeekOutCount");
            }
        }

        public string ThisWeekOutPercent
        {
            get
            {
                return m_ThisWeekOutPercent;
            }
            set
            {
                m_ThisWeekOutPercent = value;
                NofityPropertyChanged("ThisWeekOutPercent");
            }
        }

        public int LastWeekOutCount
        {
            get
            {
                return m_LastWeekOutCount;
            }
            set
            {
                m_LastWeekOutCount = value;
                NofityPropertyChanged("LastWeekOutCount");
            }
        }

        public string LastWeekOutPercent
        {
            get
            {
                return m_LastWeekOutPercent;
            }
            set
            {
                m_LastWeekOutPercent = value;
                NofityPropertyChanged("LastWeekOutPercent");
            }
        }



        public string DisplayDate
        {
            get
            {
                return m_DisplayDate;
            }
            set
            {
                m_DisplayDate = value;
                NofityPropertyChanged("DisplayDate");
            }
        }

        public string DisplayTitle
        {
            get
            {
                return m_DisplayTitle;
            }
            set
            {
                m_DisplayTitle = value;
                NofityPropertyChanged("DisplayTitle");
            }
        }

        public DateTime HistoryTime
        {
            get
            {
                return m_HistoryTime;
            }
            set
            {
                m_HistoryTime = value;
                NofityPropertyChanged("HistoryTime");
            }
        }

        public int GateID
        {
            get
            {
                return m_GateID;
            }
            set
            {
                m_GateID = value;
                NofityPropertyChanged("GateID");
            }
        }

        #region INotifyPropertyChanged Interface

        public event PropertyChangedEventHandler PropertyChanged;
        public void NofityPropertyChanged(string propertyName)
        {
            if (PropertyChanged != null)
            {
                PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
            }
        }

        #endregion
    
    }



}
